Data may be processed by a distributed processing system including a plurality of machines. Such machines may include physical computers (sometimes referred to as physical machines or physical hosts), or virtual computers (sometimes referred to as virtual machines or logic hosts) operating on physical machines. For example, complex event processing, or CEP, may be performed using a distributed processing system. The plurality of machines execute, in parallel, a plurality of events issued by various apparatuses, thereby processing the plurality of events at high speed.
In a distributed processing system, it is sometimes the case that a change is made to process assignment to individual machines in order to balance processing load among the machines. Therefore, there have been proposed various techniques for changing process assignment. For example, one proposed technique is concerned with migration of a process being executed by a first computer to a second computer, and directed to shortening the stop time of the process during the migration by continuing the execution of the process by the first computer whilst transmitting a copy of the process to the second computer.
Another proposed technique is concerned with migration of a task running on a processor to another processor, and directed to that the source processor executes a transfer task for transferring the migration target task to the destination processor, and the transfer task starts an interrupt process upon reception of an interrupt request for the migration target task during the transfer.
Yet another proposed technique is directed to distributing complex event processes to a plurality of virtual machines based on the degree of association among the complex event processes when detecting a virtual machine whose processing load has exceeded a predetermined threshold.
Japanese Laid-open Patent Publication No. 2004-78465
Japanese Laid-open Patent Publication No. 2010-272076
Japanese Laid-open Patent Publication No. 2012-79242
When a change is made in assignment of data processing, it is sometimes the case that the progress of a process before the change is desired to be passed over to the process after the change. For example, in the case where a process is carried out for a plurality of events, if some of the events have already occurred, the state of those events having already occurred may be desired to be maintained also after a change in the assignment of the process. In view of this, it is considered to provide a report on the progress of the process by an originally assigned first machine to a newly assigned second machine to thereby cause the second machine to take over the process in the middle. However, data to be used in the process reassigned to the second machine may be input to the first machine during the transmission of the progress information from the first machine to the second machine. The data handling in this situation is problematic.
Assume, for example, that the first machine continues to process the input data, as in the proposed technique described above. However, if the data is continuously sent to the first machine, the first machine is not able to finish the process and it may therefore take too long to allow the second machine to start the process. Assume, on the other hand that, the first machine stops the process and transmits, to the second machine, the data input to the first machine after completing transmission of the progress information, to thereby cause the second machine to resume the process. In this case, waiting for the completion of transmission of the progress information and then again waiting to transmit the data to the second machine may delay the arrival of the data at the second machine, thus delaying the resumption of the process at the second machine.